#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import string
from random import shuffle


# 打乱字符串的方法
def shuffle_str(str):
    # 将字符串转换成列表
    str_list = list(str)
    # 调用random模块的shuffle函数打乱列表
    shuffle(str_list)
    # 将列表转字符串
    return ''.join(str_list)


chibifu = '''《赤壁赋》'''
help(chibifu.find('i'))

name = '''苏轼'''

content = '''壬戌之秋，七月既望，苏子与客泛舟游于赤壁之下。清风徐来，水波不兴。举酒属客，诵明月之诗，歌窈窕之章。少焉，月出于东山之上，徘徊于斗牛之间。白露横江，水光接天。纵一苇之所如，凌万顷之茫然。浩浩乎如冯虚御风，而不知其所止；飘飘乎如遗世独立，羽化而登仙。于是饮酒乐甚，扣舷而歌之。歌曰：“桂棹兮兰桨，击空明兮溯流光。渺渺兮予怀，望美人兮天一方。”客有吹洞箫者，倚歌而和之。其声呜呜然，如怨如慕，如泣如诉；余音袅袅，不绝如缕。舞幽壑之潜蛟，泣孤舟之嫠妇。苏子愀然，正襟危坐，而问客曰：“何为其然也？”客曰：“‘月明星稀，乌鹊南飞。’此非曹孟德之诗乎？西望夏口，东望武昌，山川相缪，郁乎苍苍，此非孟德之困于周郎者乎？方其破荆州，下江陵，顺流而东也，舳舻千里，旌旗蔽空，酾酒临江，横槊赋诗，固一世之雄也，而今安在哉？况吾与子渔樵于江渚之上，侣鱼虾而友麋鹿，驾一叶之扁舟，举匏尊（樽）以相属。寄蜉蝣于天地，渺沧海之一粟。哀吾生之须臾，羡长江之无穷。挟飞仙以遨游，抱明月而长终。知不可乎骤得，托遗响于悲风。” 苏子曰：“客亦知夫水与月乎？逝者如斯，而未尝往也；盈虚者如彼，而卒莫消长也。盖将自其变者而观之，则天地曾不能以一瞬；自其不变者而观之，则物与我皆无尽也，而又何羡乎！且夫天地之间，物各有主，苟非吾之所有，虽一毫而莫取。惟江上之清风，与山间之明月，耳得之而为声，目遇之而成色，取之无禁，用之不竭。是造物者之无尽藏也，而吾与子之所共适。”客喜而笑，洗盏更酌。肴核既尽，杯盘狼籍。相与枕藉乎舟中，不知东方之既白。'''

# 字符串格式化方法
print('首字母大写：', 'first'.capitalize())
print('字符串全部小写：', 'FIRST'.casefold())
print('字符串全部小写：', 'FIRST'.lower())
print('字符串全部大写：', 'first'.upper())
print('左边填充：', 'first'.ljust(20, '*'))
print('右边填充：', 'right'.rjust(20, "*"))
print('格式化为标题：', 'this is first time'.title())
print('左右去除空格、换行符：', ' \t \n character string \t \n '.strip())
print('左边去除空格、换行符：', '\t \n character string \t \n '.lstrip())
print('右边去除空格、换行符：', ' \t \n character string \t \n '.rstrip())
print('utf-8编码格式：', "utf-8编码格式".encode())
print('gbk编码格式：', "utf-8编码格式".encode("gbk"))
print('gbk解码格式：', "utf-8编码格式".encode("gbk").decode("gbk"))
# print('utf-8解码格式：', "utf-8编码格式".encode("gbk").decode("utf-8"))

# 字符串判断-查找-替换方法
print('判断字符串是否为数字：', '1234'.isdigit(), 'abcdef'.isdigit())
print('判断字符串是否以150开头：', '1507896'.startswith('150'), '1507896'.startswith('151'))
print('判断字符串是否是字母或数字：', '1507896'.isalnum(), 'aaa151'.isalnum(), 'abc'.isalnum(), 'ab*c'.isalnum())
print('判断字符串是否是字母：', '1507896'.isalpha(), 'aaa151'.isalpha(), 'abc'.isalpha(), 'ab*c'.isalnum())
print('判断字符串是否是合法变量名：', 'a1'.isidentifier(), '1a'.isidentifier())
print('判断字符串是否是数字：', '二百五'.isnumeric(), '贰佰伍'.isnumeric(), '贰佰五'.isnumeric(), '250'.isnumeric(),
      'II'.isnumeric(), 'Two hundred and fifty'.isnumeric())
print('判断字符串是否是标题：', 'Two Hundred And Fifty'.istitle(), 'Two hundred and fifty'.istitle(), '贰佰伍'.istitle())
print('字符串查找（index找不到会报错）：', 'Two Hundred And Fifty'.find('n', 0, 10),
      'Two Hundred And Fifty'.find('n', 0, 10),
      'Two Hundred And Fifty'.index('n', 0, 10))
print('字符串切分：', 'Two Hundred And Fifty'.split(' '))
print('字符串替换：', 'Two Hundred And Fifty'.replace('n', 'N'))
print('字符串反转：', 'Two Hundred And Fifty'[::-1])

print('判断字符串是否包含字母：', 'Two Hundred And Fifty'.count('F'))

# 列表转字符串
print('列表转字符串:', ' '.join(['Two', 'hundred', 'and', 'fifty']))

# 字符串加密，需要一个加密密码本+一个解密密码本
string_printable = '{0}'.format(string.printable)

print('字符串加密：')
source = shuffle_str(string_printable)
target = shuffle_str(string_printable)
print(f'source[{source}] , target[{target}]')
# 制作加密密码本和解密密码本
encrypt_translation_table = str.maketrans(source, target)
decrypt_translation_table = str.maketrans(target, source)

msg = "this is an important msg , it can't been seen by the enemy"
# 用加密本加密，用解密本解密
encrypt_msg = str.translate(msg, encrypt_translation_table)
decrypt_msg = str.translate(encrypt_msg, decrypt_translation_table)

encrypt_encrypt_msg = str.translate(encrypt_msg, encrypt_translation_table)
decrypt_decrypt_msg = str.translate(encrypt_encrypt_msg, decrypt_translation_table)

print('origin msg : ', msg)
print('encrypt msg : ', encrypt_msg)
print('encrypt encrypt msg : ', encrypt_encrypt_msg)
print('decrypt msg : ', decrypt_msg)
print('decrypt decrypt msg : ', decrypt_decrypt_msg)
